<?php

namespace App\Enums;

class AssetTypeEnum
{
    const ENUM = [
        ['assetType' => 1, 'code' => 'CASH', 'text' => 'Cash'],
        ['assetType' => 2, 'code' => 'COIN', 'text' => 'Coins'],
        ['assetType' => 3, 'code' => 'SCORE', 'text' => 'Points'],
    ];

    const CASH = 1;
    const COIN = 2;
    const SCORE = 3;

    /**
     * 根据资产类型获取对应的枚举项
     *
     * @param int $assetType 资产类型
     * @return array|null 对应的枚举项或 null
     */
    public static function getEnumByAssetType(int $assetType): ?array
    {
        foreach (self::ENUM as $item) {
            if ($assetType === $item['assetType']) {
                return $item;
            }
        }
        return null;
    }

    /**
     * 根据资产类型获取对应的文本
     *
     * @param int $assetType 资产类型
     * @return string 对应的文本或空字符串
     */
    public static function getTextByAssetType(int $assetType): string
    {
        $enumByAssetType = self::getEnumByAssetType($assetType);
        return $enumByAssetType['text'] ?? '';
    }

    /**
     * 获取所有资产类型的文本映射
     *
     * @return array
     */
    public static function getAllByAssetType(): array
    {
        return array_column(self::ENUM, 'text', 'assetType');
    }

    /**
     * 需要转换的资产类型
     *
     * @return array
     */
    public static function needTransition(): array
    {
        return [self::CASH, self::COIN];
    }
}
